/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2023-2023. All rights reserved.
 * File name     :  arm_ras_c_union_define.h
 * Description   :  SPU ram_ras 相关寄存器结构体定义
 * History       :  2023/04/19 11:05:46 Create file
 */

#ifndef __ARM_RAS_C_UNION_DEFINE_H__
#define __ARM_RAS_C_UNION_DEFINE_H__

#include "common.h"

/* Define the union csr_arer_err_fr_l_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    err_fr_ed  : 2  ; /* [1:0] */
        u32    rsv_0      : 2  ; /* [3:2] */
        u32    err_fr_ui  : 2  ; /* [5:4] */
        u32    err_fr_fi  : 2  ; /* [7:6] */
        u32    err_fr_ue  : 2  ; /* [9:8] */
        u32    err_fr_cfi : 2  ; /* [11:10] */
        u32    err_fr_cec : 3  ; /* [14:12] */
        u32    err_fr_rp  : 1  ; /* [15] */
        u32    err_fr_dui : 2  ; /* [17:16] */
        u32    err_fr_ceo : 2  ; /* [19:18] */
        u32    rsv_1      : 12  ; /* [31:20] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_arer_err_fr_l_u;

/* Define the union csr_arer_err_fr_h_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    rsv_2 : 32  ; /* [31:0] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_arer_err_fr_h_u;

/* Define the union csr_arer_err_ctrl_l_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    err_ctrl_ed  : 1  ; /* [0] */
        u32    rsv_3        : 1  ; /* [1] */
        u32    err_ctrl_ui  : 1  ; /* [2] */
        u32    err_ctrl_fi  : 1  ; /* [3] */
        u32    err_ctrl_ue  : 1  ; /* [4] */
        u32    rsv_4        : 3  ; /* [7:5] */
        u32    err_ctrl_cfi : 1  ; /* [8] */
        u32    rsv_5        : 1  ; /* [9] */
        u32    err_ctrl_dui : 1  ; /* [10] */
        u32    rsv_6        : 21  ; /* [31:11] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_arer_err_ctrl_l_u;

/* Define the union csr_arer_err_ctlr_h_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    rsv_7 : 32  ; /* [31:0] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_arer_err_ctlr_h_u;

/* Define the union csr_arer_err_status_l_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    err_status_serr : 8  ; /* [7:0] */
        u32    err_status_ierr : 8  ; /* [15:8] */
        u32    rsv_8           : 4  ; /* [19:16] */
        u32    err_status_uet  : 2  ; /* [21:20] */
        u32    err_status_pn   : 1  ; /* [22] */
        u32    err_status_de   : 1  ; /* [23] */
        u32    err_status_ce   : 2  ; /* [25:24] */
        u32    err_status_mv   : 1  ; /* [26] */
        u32    err_status_of   : 1  ; /* [27] */
        u32    err_status_er   : 1  ; /* [28] */
        u32    err_status_ue   : 1  ; /* [29] */
        u32    err_status_v    : 1  ; /* [30] */
        u32    err_status_av   : 1  ; /* [31] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_arer_err_status_l_u;

/* Define the union csr_arer_err_status_h_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    rsv_9 : 32  ; /* [31:0] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_arer_err_status_h_u;

/* Define the union csr_arer_err_addr_l_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    column : 18;
        u32    row_l : 14;
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_arer_err_addr_l_u;

/* Define the union csr_arer_err_addr_h_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    row_h : 4; // 0~3
        u32    bank : 4; // 4~7
        u32    lg_rnk : 3; // 8~10
        u32    rank : 2; // 11~12
        u32    dimm : 1; // 13
        u32    zero : 10; //
        u32    rsv_10 : 5;
        u32    err_addr_ai : 1;
        u32    err_addr_si : 1;
        u32    err_addr_ns : 1;
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_arer_err_addr_h_u;

/* Define the union csr_arer_err_misc0_l_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    rsv_11 : 32  ; /* [31:0] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_arer_err_misc0_l_u;

/* Define the union csr_arer_err_misc0_h_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    rsv_12 : 32  ; /* [31:0] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_arer_err_misc0_h_u;

/* Define the union csr_arer_err_misc1_l_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    rank            : 4  ; /* [3:0] */
        u32    bank            : 4  ; /* [7:4] */
        u32    device          : 5  ; /* [12:8] */
        u32    rsv_13          : 2  ; /* [14:13] */
        u32    busy            : 1  ; /* [15] */
        u32    dev_lvl_err_cnt : 16  ; /* [31:16] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_arer_err_misc1_l_u;

/* Define the union csr_arer_err_misc1_h_u */
typedef union {
    /* Define the struct bits */
    struct {
        u32    rank_lvl_err_cnt : 16  ; /* [15:0] */
        u32    bank_lvl_err_cnt : 16  ; /* [31:16] */
    } bits;

    /* Define an unsigned member */
    u32    value;
} csr_arer_err_misc1_h_u;

#endif // __ARM_RAS_C_UNION_DEFINE_H__
